import java.util.Arrays;

/**
 * @Author：徐志荣
 * @Date：2023/7/30 下午 7:05
 */
public class Day0730 {

    public static int  triangleNumber(int[] nums) {
        // 1. 优化
        Arrays.sort(nums);

        //2. 利用双指针解决问题
        int ret = 0 , n = nums.length;
        for(int i = n-1; i>=2;i--){  //先固定最大的数
            //利用双指针快速统计出符合要求的三元组的个数
            int left = 0, right = i-1;
            while(left<right){
                if(nums[left] + nums[right] >nums[i]){
                    ret += right-left;
                    right--;
                }else{
                    left++;
                }
            }
        }
        return ret;
    }
    public static int[] twoSum(int[] nums, int target) {
        int left = 0,right = nums.length-1;
        while(left<right){
            int sum = nums[left] + nums[right];
            if(  sum> target){
                right--;
            }else if( sum < target){
                left++;
            }else if( sum== target){
                return new int[]{nums[left],nums[right]};
            }
        }
        return null;
    }
    public static void main(String[] args) {
        int nums[] = {2,2,3,4,5,9,10};
        System.out.println("611. 有效三角形的个数 ： "+triangleNumber(nums));

        int nums2[] = {2,7,11,15};
        System.out.println("剑指 Offer 57. 和为s的两个数字 : " + Arrays.toString(twoSum(nums2,9)));
    }
}
